const path = "./main.js"
if (!files.exists(path)) {
  toast("脚本文件不存在: " + path)
  exit()
}

// 程序开始运行之前判断无障碍服务
if (auto.service == null) {
  toastLog("请先开启无障碍服务！")
  sleep(1000)
  app.startActivity({
    action: "android.settings.ACCESSIBILITY_SETTINGS",
  })
}

const window = floaty.window(
  <frame>
    <button id="action" text="开始运行" w="90" h="40" bg="#77ffffff" />
  </frame>
)

// window.setPosition(, 400)
setInterval(() => {}, 1000)

let execution = null

//记录按键被按下时的触摸坐标
let x = 0
let y = 0
//记录按键被按下时的悬浮窗位置
let windowX
let windowY
//记录按键被按下的时间以便判断长按等动作
let downTime

window.action.setOnTouchListener(function (view, event) {
  switch (event.getAction()) {
    case event.ACTION_DOWN:
      x = event.getRawX()
      y = event.getRawY()
      windowX = window.getX()
      windowY = window.getY()
      downTime = new Date().getTime()
      return true
    case event.ACTION_MOVE:
      //移动手指时调整悬浮窗位置
      window.setPosition(windowX + (event.getRawX() - x), windowY + (event.getRawY() - y))
      //如果按下的时间超过1.5秒判断为长按，退出脚本
      if (new Date().getTime() - downTime > 1500) {
        exit()
      }
      return true
    case event.ACTION_UP:
      //手指弹起时如果偏移很小则判断为点击
      if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
        onClick()
      }
      return true
  }
  return true
})

function onClick() {
  if (window.action.getText() == "开始运行") {
    execution = engines.execScriptFile(path)
    window.action.setText("停止运行")
  } else {
    if (execution) {
      execution.getEngine().forceStop()
    }
    window.action.setText("开始运行")
  }
}